package rlm;

import rlm.rlcontainer.PlaceHolder;
import linearProgramming.Constraint;
import linearProgramming.Variable;
import alm.LayoutSpec;

public abstract class Edge<T extends Variable> {
	private final PlaceHolder a;
	private final PlaceHolder b;
	private T var;
	
	public Edge(PlaceHolder a, PlaceHolder b){
		this.a = a;
		this.b = b;
		
	}
	
	protected boolean done;
	
	public boolean isDone() {
		return done;
	}
	public void setDone(boolean done) {
		this.done = done;
	}
	protected PlaceHolder getA() {
		return a;
	}
	
	protected PlaceHolder getB() {
		return b;
	}
	
	protected T getVar() {
		return var;
	}
	protected void setVar(T var) {
		this.var = var;
	}
	
	
	public abstract Constraint generateConstraint(LayoutSpec ls);
	
}
